package com.tinet.autentia.autentificador;

import java.util.ArrayList;

import com.tinet.autentia.autentificador.model.Usuario;

/**
 * 
 * Clase Interfaz de Usuario Dao.
 * 
 * @author Grupo de la muerte.
 */

public interface UsuarioDao {

    /**
     * Metodo que busca un usuario en la base de datos.
     * 
     * @param usuarioABuscar
     *            Objeto tipo usuario que se busca en la base de datos.
     * @return Usuario encontrado es retornado para desplegar sus datos.
     */
    Usuario buscar(Usuario usuarioABuscar);

    /**
     * Metodo que agregar un usuario a la base de datos.
     * 
     * @param nuevoUsuario
     *            Es el objeto usuario que recibe el metodo y agrega a la base
     *            de datos.
     */
    void agregar(Usuario nuevoAgregar);

    /**
     * Metodo que hace un borrado logico en la base de datos.
     * 
     * @param usuarioAEliminar
     *            Es el objeto usuario que recibe el metodo, para buscarlo y
     *            eliminar a su par.
     */
    void borrar(Usuario usuarioBorrar);

    /**
     * Metodo que hace un Activa logicamente al usuario en la base de datos.
     * 
     * @param usuarioAEliminar
     *            Es el objeto usuario que recibe el metodo, para buscarlo y
     *            eliminar a su par.
     */
    void activar(Usuario usuarioActivar);

    /**
     * Metodo que modificar a un usuario en la base de datos.
     * 
     * @param usuarioAActualizar
     *            Es el objeto usuario que recibe el metodo, para buscarlo y
     *            actualizar sus datos.
     */
    void actualizar(Usuario usuarioActualizar);

    /**
     * Metodo que retorna la lista de todos los usuarios.
     * 
     * @return Retorna una lista con todos los usuarios de la base de datos.
     */
    ArrayList<Usuario> listar();

}
